#include <QDebug>
#include "registronotas.h"
#include "entrenador.h"

RegistroNotas::RegistroNotas()
{
	milisegndosMemoria = 2000;
}

RegistroNotas::~RegistroNotas()
{

}

QList<NotaRegistrada> RegistroNotas::getListaNotas()
{
	QMutexLocker locker(&mutex);
	actualizar();
	return colaNotas;
}

void RegistroNotas::limpiar()
{
	QMutexLocker locker(&mutex);
	colaNotas.clear();
}

void RegistroNotas::registrar(quint64 milisegundo, int nota, int velocidad)
{	
	QMutexLocker locker(&mutex);
	actualizar();
	colaNotas.enqueue(NotaRegistrada(milisegundo, nota, velocidad));	
}

quint64 RegistroNotas::getUltimoTiempo()
{
	QMutexLocker locker(&mutex);
	if (colaNotas.isEmpty()) {
		return 0;
	}
	return colaNotas.last().milisegundo;
}

void RegistroNotas::actualizar()
{
	if (colaNotas.isEmpty()) {
		return;
	}
	quint64 msActual = Entrenador::getInstancia()->getMilisegundosDesdeInicio();
			
	while (!colaNotas.isEmpty()) {		
		quint64 ms = colaNotas.head().milisegundo;
		if (ms + milisegndosMemoria < msActual) {	
			colaNotas.dequeue();
		} else { 
			break;
		}
	}
}
